<?php
namespace app\ux;

use think\Db;
use think\Controller;

class System extends Controller
{
    /**
     * PHP版本
     */
    public function phpVersion()
    {

        return (!function_exists('phpversion')) ? '' : phpversion();
    }
    /**
     * MySQL版本
     */
    public function dbVersion()
    {

        $res = Db::query("select version() as version");
        return $res[0]['version'];
    }
    /**
     * Apatch版本
     */
    public function webServer()
    {
        $arr = explode(" ", $_SERVER["SERVER_SOFTWARE"], 3);
        if (count($arr) > 1) {
            return ($arr[0] . " " . $arr[1]);
        } else if (1 == count($arr)) {
            return ($arr[0]);
        }
    }
    /**
     * 操作系统名
     */
    public function osName()
    {
        return PHP_OS;
    }
    /**
     * OS 版本
     */
    public function osVersion()
    {
        return php_uname('v');
    }
    /**
     * 服务器IP
     */
    public function serverIp()
    {

        if ('/' == DIRECTORY_SEPARATOR) {
            $server_ip = $_SERVER['SERVER_ADDR'];
        } else {
            $server_ip = @GetHostByName($_SERVER['SERVER_NAME']);
        }
        return $server_ip;
    }
    /**
     * 服务器域名
     */
    public function serverName()
    {
        return $_SERVER['SERVER_NAME'];
    }
    /**
     * 脚本内存使用限制
     */
    public function memoryLimit()
    {
        return get_cfg_var("memory_limit");
    }
    /**
     * 脚本内存使用
     */
    public function memoryUsage()
    {
        $memory = (!function_exists('memory_get_usage')) ? '0' : $this->convert(memory_get_usage());
        return $memory;
    }
    /**
     * 上传文件大小限制
     */
    public function uploadMaxFilesize()
    {
        return get_cfg_var("upload_max_filesize");
    }
    /**
     * 资源使用状况(Windows PHP7.0+)
     */
    public function usage()
    {
        return getrusage();
    }
    /**
     * 内存单位
     */
    public function convert($size)
    {
        $unit = array('b', 'kb', 'mb', 'gb', 'tb', 'pb');
        return @round($size / pow(1024, ($i = floor(log($size, 1024)))), 2) . ' ' . $unit[$i];
    }
    /**
     * [memoryUsage description]
     * @DateTime 2017-12-25
     * @return   [type]
     */
    public function getMemoryUsage()
    {
        $memory = (!function_exists('memory_get_usage')) ? '0' : round(memory_get_usage() / 1024 / 1024, 2) . 'MB';
        return $memory;
    }
}
